package com.dragon.common.spring.openapi;

import java.lang.reflect.Modifier;

/**
 * 类类型检查器
 * 用于判断一个类是否是接口、抽象类或具体类
 */
public class ClassTypeChecker {
    
    /**
     * 判断一个类是否是接口
     */
    public static boolean isInterface(Class<?> clazz) {
        return clazz.isInterface();
    }
    
    /**
     * 判断一个类是否是抽象类
     */
    public static boolean isAbstractClass(Class<?> clazz) {
        return Modifier.isAbstract(clazz.getModifiers()) && !clazz.isInterface();
    }
    
    /**
     * 判断一个类是否是具体类（非接口、非抽象类）
     */
    public static boolean isConcreteClass(Class<?> clazz) {
        return !clazz.isInterface() && !Modifier.isAbstract(clazz.getModifiers());
    }
    
    /**
     * 获取类的类型描述
     */
    public static String getClassType(Class<?> clazz) {
        if (clazz.isInterface()) {
            return "接口(Interface)";
        } else if (Modifier.isAbstract(clazz.getModifiers())) {
            return "抽象类(Abstract Class)";
        } else {
            return "具体类(Concrete Class)";
        }
    }
}